各位想到了嗎,我們還有檔案的訊息沒有處裡到(我是很常使用直接傳檔案給其他人啦),因此 FileMessage 也需要進行處理。
不過 Line 是無法直接對機器人傳送檔案的,因此我們可以先建立一個 1 人群組,再將機器人拉進我們的群組裡面,這樣就可以測試 FileMessage 了。
加完群組後,我們參考 官方文件 可以得知,有 File Name 可以直接取用,而且跟圖片一樣皆需要透過另一隻 API 進行下載。
因此我們可以再將前面的處理函式改成這樣。
@handler.add(MessageEvent, message=(ImageMessage, VideoMessage, AudioMessage, FileMessage))
def handle_media(event):
content = line_bot_api.get_message_content(event.message.id)
file_name = f"{event.message.id}.{content.content_type.split('/')[1].lower()}" if event.message.type != "file" else event.message.file_name
os.makedirs(f"Media/{event.message.type.title()}", exist_ok=True)
with open(F"Media/{event.message.type.title()}/{file_name}", "wb") as fp:
for iter_data in content.iter_content():
fp.write(iter_data)
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.id)
)
這樣就可以同時處理圖片、影片、聲音及檔案的訊息了。
那麼就先到這邊,只是我們現在回復的訊息有點單調,那我們要如何美化我們回復的訊息呢?
大家掰~掰~